﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Excel;
using System.IO;
using System.Globalization;
using QLTV_V2.DataAccess;
using QLTV_V2.BussinessLogic;
using QLTV_V2.BussinessObject;

namespace QLTV_V2
{
    public partial class Frm_NhapDSbandoc : Form
    {
        public Frm_NhapDSbandoc()
        {
            InitializeComponent();
        }
        ConnectData conn = new ConnectData();
        BanDocBUS bdBUS = new BanDocBUS();
        Utilities uti = new Utilities();
        ExportToExcel exp = new ExportToExcel();
        DataSet dsSource = null;//Biễn toàn cục chứa dataset đã load
        DataSet GetDatasetFromExcel(string path)
        {
                FileStream stream = File.Open(path, FileMode.Open, FileAccess.Read);
                IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
                excelReader.IsFirstRowAsColumnNames = true;
                DataSet result = excelReader.AsDataSet();
                return result;
        }
        private void btn_XuatFileMau_Click(object sender, EventArgs e)
        {
            DataTable dtb = new DataTable();
            dtb = bdBUS.getSource_FileMau_BanDoc();
            exp.exportExcel_2(dgv_BanDoc, dtb, 2);
        }
        void loadComboBox(DataSet ds)
        {
            foreach (DataTable tbl in ds.Tables)
                comb_Sheet.Items.Add(tbl.TableName);
        }

        private void btn_ChonFile_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.Filter = "*.xls|*.xls|*.xlsx|*.xlsx";
                if (dlg.ShowDialog() == DialogResult.OK)
                {
                    // dsSource = Import2DataBaseFormExcel(dlg.FileName);
                    dsSource = GetDatasetFromExcel(dlg.FileName);
                    loadComboBox(dsSource);
                    txt_LinkFile.Text = dlg.FileName;
                    comb_Sheet.SelectedIndex = 0;
                }
            }
            catch
            { }
        }

        private void btn_DocDL_Click(object sender, EventArgs e)
        {
            try
            {
                if (comb_Sheet.Text == "")
                    return;
                DataTable tbl = dsSource.Tables[comb_Sheet.Text];
                dgv_BanDoc.DataSource = tbl;
            }
            catch
            { }
        }

        private void btn_Luu_Click(object sender, EventArgs e)
        {
            try
            {
                int sum = dgv_BanDoc.Rows.Count - 1;
                if (sum > 0)
                {
                    dgv_BanDoc.CurrentCell = dgv_BanDoc.Rows[0].Cells[0];
                    //
                    int dem = 0;
                    //
                    progressBar1.Maximum = sum;
                    progressBar1.Minimum = 0;
                    progressBar1.Step = 1;
                    for (int i = 0; i < sum; i++)
                    {
                        DataGridViewRow row = dgv_BanDoc.Rows[i];
                        BanDoc bd = new BanDoc();
                        bd = GetBanDoc_Object(i);
                        if (checkSave(bd) == true)
                        {
                            if (uti.CheckExitsValue("BanDoc", "MaBanDoc", bd.MaBanDoc) == true)
                            {
                                if (bdBUS.InsertDSBandoc(bd) == true)
                                    dem++;
                                progressBar1.PerformStep();
                            }
                            else
                                //Đổi màu row
                                row.DefaultCellStyle.BackColor = Color.Yellow;
                        }
                        else
                            row.DefaultCellStyle.BackColor = Color.Red;
                    }
                    progressBar1.Value = sum;
                    MessageBox.Show("Đăng kí thành công " + dem.ToString() + " thẻ bạn đọc", "Thông báo");
                    progressBar1.Value = 0;
                }
                else
                    MessageBox.Show("Không có dữ liệu", "Thông báo");
            }
            catch
            { 
            
            }
        }
        BanDoc GetBanDoc_Object(int dong)
        {
            BanDoc bd = new BanDoc();
            bd.MaBanDoc = dgv_BanDoc.Rows[dong].Cells[1].Value.ToString().ToUpper();
            bd.TenBanDoc = dgv_BanDoc.Rows[dong].Cells[2].Value.ToString();
            string gt = dgv_BanDoc.Rows[dong].Cells[4].Value.ToString();
            if (gt == "Nam")
                bd.GioiTinh = true;
            else
                bd.GioiTinh = false;
            bd.DiaChi = dgv_BanDoc.Rows[dong].Cells[5].Value.ToString();
            bd.Email = dgv_BanDoc.Rows[dong].Cells[6].Value.ToString();
            bd.SoDT = dgv_BanDoc.Rows[dong].Cells[7].Value.ToString();
            timer1.Enabled = true;
            DateTime now = System.DateTime.Now;
            bd.NgayLapThe = now;
            bd.NgayHetHan = now.AddDays(365);
            string manhom = dgv_BanDoc.Rows[dong].Cells[8].Value.ToString();
            bd.MaNhom = manhom;
            bd.HinhAnh = @"Images\BanDoc\no-avatar.jpg";
            return bd;
        }
        bool checkSave(BanDoc bd)
        {
            if (bd.MaBanDoc.Equals(""))
            {
                //MessageBox.Show("Mã bạn đọc không được bỏ trống", "Thông báo");
                return false;
            }
            if (bd.TenBanDoc.Equals(""))
            {
                //MessageBox.Show("Tên bạn đọc không được bỏ trống", "Thông báo");
                return false;
            }
            if (bd.MaNhom.Equals("") || uti.CheckExitsValue("NhomBanDoc", "MaNhom", bd.MaNhom) == true)
            {
                //MessageBox.Show("Mã nhóm không đúng", "Thông báo");
                return false;
            }
            if (bd.DiaChi.Equals(""))
            {
                //MessageBox.Show("Chưa nhập địa chỉ liên hệ","Thông báo");
                return false;
            }
            if (bd.Email != "" && uti.isValidEmail(bd.Email) == false)
            {
                ////MessageBox.Show("Email không hợp lệ", "Thông báo");
                return false;
            }
            if (bd.SoDT != "" && uti.checkDigit(bd.SoDT) == false)
            {
                //MessageBox.Show("Số ĐT không hợp lệ", "Thông báo");
                return false;
            }
            return true;
        }
        private void btn_Thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dgv_BanDoc_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            uti.dgv_GetSTT_RowHeader(sender, e, dgv_BanDoc);
        }

    }
}
